package org.base23.video.domain.dto;

import lombok.Data;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;

/**
 * AI指导会话
 */
@Data
public class AiGuidanceConversation {
    
    /**
     * 会话ID
     */
    private String conversationId;
    
    /**
     * 关联的分析结果ID
     */
    private String resultId;
    
    /**
     * 运动类型
     */
    private String sportType;
    
    /**
     * 用户ID
     */
    private String userId;
    
    /**
     * 会话状态
     */
    private ConversationStatus status;
    
    /**
     * 创建时间
     */
    private String createTime;
    
    /**
     * 最后更新时间
     */
    private String lastUpdateTime;
    
    /**
     * 设置创建时间
     */
    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime != null ? createTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null;
    }
    
    /**
     * 设置最后更新时间
     */
    public void setLastUpdateTime(LocalDateTime lastUpdateTime) {
        this.lastUpdateTime = lastUpdateTime != null ? lastUpdateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null;
    }
    
    /**
     * 获取创建时间的LocalDateTime对象
     */
    @JsonIgnore
    public LocalDateTime getCreateTimeAsLocalDateTime() {
        return createTime != null ? LocalDateTime.parse(createTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null;
    }
    
    /**
     * 获取最后更新时间的LocalDateTime对象
     */
    @JsonIgnore
    public LocalDateTime getLastUpdateTimeAsLocalDateTime() {
        return lastUpdateTime != null ? LocalDateTime.parse(lastUpdateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null;
    }
    
    /**
     * 消息历史
     */
    private List<AiGuidanceMessage> messages = new ArrayList<>();
    
    /**
     * 推荐问题列表
     */
    private List<String> suggestedQuestions = new ArrayList<>();
    
    /**
     * 分析结果概要（用于AI上下文）
     */
    private String analysisSummary;
    
    /**
     * 会话状态枚举
     */
    public enum ConversationStatus {
        ACTIVE,     // 活跃
        PAUSED,     // 暂停
        COMPLETED   // 完成
    }
} 